package com.swxy.club.dto;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.swxy.club.enums.Gender;
import com.swxy.club.enums.UserStatus;
import com.swxy.club.serializer.EnumFlatSerializer;
import com.swxy.club.serializer.GenderDeserializer;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.io.Serializable;


/**
 * @author 易
 */

@EqualsAndHashCode(callSuper = true)
@Data
@TableName("user")
public class User extends BaseDto implements Serializable {

    /**
     * 用户唯一标识（主键）
     */
    @TableId(type = IdType.AUTO)
    private Long id;

    /**
     * 学号或工号，用于登录系统，必须唯一
     */
    private String idNumber;

    /**
     * 用户密码
     */
    private String password;

    /**
     * 用户邮箱，用于联系或找回密码，确保唯一性
     */
    private String email;

    /**
     * 用户手机号，用于联系或短信通知
     */
    private String phone;

    /**
     * 用户真实姓名
     */
    private String realName;

    /**
     * 用户性别，可选值：male（男）、female（女）
     */
    @JsonSerialize(using = EnumFlatSerializer.class)
    @JsonDeserialize(using = GenderDeserializer.class)
    private Gender gender;

    /**
     * 用户头像 URL，存储用户上传的头像路径
     */
    private String avatar;

    /**
     * 用户角色 ID
     */
    private String roleId = "2";

    /**
     * 用户状态，默认为 正常
     */
    @JsonSerialize(using = EnumFlatSerializer.class)
    private UserStatus status = UserStatus.NORMAL;


}
